/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.beautycenter.bean;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

/**
 *
 * @author Romulo
 */

@Entity
@Table(name = "SESSAO")
public class Sessao implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="ID_SESSAO")
    private int idSessao;
    
    @Column(name="DT_SESSAO")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dtSessao;
    
    @Column(name="HORARIO")
    @Temporal(TemporalType.TIME)
    private Date horario;
    
    @Column(name="VALOR_SESSAO")
    private double valorSessao;
    
    @Column(name="NUMERO_SESSAO")
    private int numeroSessao;
    
    @Column(name="PRESENCA")
    private boolean presenca;
    
    @Column(name="PAGAMENTO_EFETUDO", scale=2)
    private double pagamentoEfetuado;
    
    @OneToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="ID_TRATAMENTO")
    private Tratamento tratamento;
    
    //relacionamento pacote de tratamento 1-N sessões
    @ManyToOne
    @JoinColumn(name="ID_PACOTE_TRATAMENTO", referencedColumnName="ID_PACOTE_TRATAMENTO")
    private PacoteTratamento pacoteTratamento;
    
    @ManyToOne
    @JoinColumn(name="ID_FUNCIONARIO", referencedColumnName="ID_PESSOA")
    private Funcionario funcionario;
    
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "INDICACAO")
    private Funcionario indicacao;
    
    @Transient
    private boolean alteracao = false;
    
    //quantidade clientes servirá apenas para o relatorio
    @Transient
    private int quantidadeClientes;
    
    public Sessao() {
    }

    public Sessao(double valorSessao, Tratamento tratamento, Integer count, Double total) {
        this.valorSessao = valorSessao;
        this.tratamento = tratamento;
    }

    public Sessao(double valorSessao, Tratamento tratamento, int quantidadeClientes) {
        this.valorSessao = valorSessao;
        this.tratamento = tratamento;
        this.quantidadeClientes = quantidadeClientes;
    }
    
    
    
    public int getIdSessao() {
        return idSessao;
    }

    public void setIdSessao(int idSessao) {
        this.idSessao = idSessao;
    }

    public Date getDtSessao() {
        return dtSessao;
    }

    public void setDtSessao(Date dtSessao) {
        this.dtSessao = dtSessao;
    }

    public double getValorSessao() {
        return valorSessao;
    }

    public void setValorSessao(double valorSessao) {
        this.valorSessao = valorSessao;
    }

    public int getNumeroSessao() {
        return numeroSessao;
    }

    public void setNumeroSessao(int numeroSessao) {
        this.numeroSessao = numeroSessao;
    }

    public boolean isPresenca() {
        return presenca;
    }

    public void setPresenca(boolean presenca) {
        this.presenca = presenca;
    }

    public PacoteTratamento getPacoteTratamento() {
        return pacoteTratamento;
    }

    public void setPacoteTratamento(PacoteTratamento pacoteTratamento) {
        this.pacoteTratamento = pacoteTratamento;
    }

    public Tratamento getTratamento() {
        return tratamento;
    }

    public void setTratamento(Tratamento tratamento) {
        this.tratamento = tratamento;
    }

    public double getPagamentoEfetuado() {
        return pagamentoEfetuado;
    }

    public void setPagamentoEfetuado(double pagamentoEfetuado) {
        this.pagamentoEfetuado = pagamentoEfetuado;
    }

    public Funcionario getFuncionario() {
        return funcionario;
    }

    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }

    public boolean isAlteracao() {
        return alteracao;
    }

    public void setAlteracao(boolean alteracao) {
        this.alteracao = alteracao;
    }

    public Date getHorario() {
        return horario;
    }

    public void setHorario(Date horario) {
        this.horario = horario;
    }

    public Funcionario getIndicacao() {
        return indicacao;
    }

    public void setIndicacao(Funcionario indicacao) {
        this.indicacao = indicacao;
    }

    public int getQuantidadeClientes() {
        return quantidadeClientes;
    }

    public void setQuantidadeClientes(int quantidadeClientes) {
        this.quantidadeClientes = quantidadeClientes;
    }
    
    
    
    
}
